1. Field of the Invention
The present invention relates to an information recording apparatus, a buffer allocation method, and a computer-readable recording medium storing a computer program, and particularly relates to an information recording apparatus having a function for immediate data transfer which is defined by iSCSI.
2. Description of the Related Art
A SCSI (Small Computer System Interface) interface is used at the input/output of an HDD (Hard Disk Drive), a disk array apparatus, etc. iSCSI allows this SCSI interface to be used on TCP/IP (Transmission Control Protocol/Internet Protocol). iSCSI is authorized by the IETF (Internet Engineering Task Force). iSCSI transfers data by encapsulating SCSI commands, responses, etc. in a TCP packet and replacing the SCSI transport with a transport for an IP network.
Immediate data transfer is one of transfers by iSCSI, and is described in a document on the Internet “drafi-ieff-ips-iscsi-20.text” URL: “http colon backslash backslash www dot haifa dot il dot ibm dot corn backslash satran backslash ips backslash draft dash ietfdash ips dash iscsi dash 20 dot txt”. For example, in an ordinary data transfer, when a host issues a write command to a disk array apparatus, the disk array apparatus sends a request for data to the host. After this, the host starts data transfer to the disk array apparatus. In contrast, in an immediate data transfer, after issuing a write command to the disk array apparatus, the host starts data transfer to the disk array apparatus without waiting for a data request from the disk array apparatus. Since in the immediate data transfer, the disk array apparatus simultaneously receives a command and data, a sufficient free space is required in the buffer of the disk array apparatus.
By using immediate data transfer, it becomes possible to build an IP-based SAN (Storage Area Network). Specifically, it becomes possible for a disk array apparatus installed on a network to be logged into by a plurality of hosts. However, the capacity of the immediate data buffer of the disk array apparatus is limited. Therefore, when the disk array apparatus allocates its immediate data buffer to all the hosts logging into the disk array apparatus, the capacity of the immediate data buffer may not be enough. More specifically, in order to allow all the hosts to perform immediate data transfer, the immediate data buffer of the disk array apparatus needs to have capacity corresponding to number of sessions×maximum number of I/Os. Accordingly, if the number of sessions or the number of hosts increases, the immediate data buffer cannot secure necessary capacity required for all the hosts to perform immediate data transfer.
For example, assume that the disk array apparatus is designed to allocate 10 mega bytes of the immediate data buffer to each host. In this case, if 200 hosts log in, the memory capacity required in the immediate data buffer is 2 giga bytes. If the memory installed on the disk array apparatus has less than 2 giga bytes, the disk array apparatus cannot allocate the immediate data buffer to all the hosts that can log in.
In a case where the disk array apparatus is designed to uniformly allocate the immediate data buffer to all the hosts that can log in, the capacity of the immediate data buffer that is allocated to each host is the value obtained by dividing the total capacity of the immediate data buffer of the disk array apparatus by the maximum number of hosts that can log in. For example, in a case where a disk array apparatus having an immediate data buffer of 1 mega byte can be logged into by 200 hosts, the capacity of the immediate data buffer that is usable by each host is only 5 kilo bytes.
If the disk array apparatus allocates a sufficient capacity of the immediate data buffer to each host that logs in, the disk array apparatus can allow only a limited number of hosts to perform immediate data transfer thereto. For example, in a case where the immediate data buffer of the disk array apparatus has 10 mega bytes and the disk array apparatus allocates 1 mega byte of the immediate data buffer to each host, all the capacity of the immediate data buffer is occupied by the first ten hosts that log in. Therefore, any hosts that log in after this cannot use the immediate data buffer or perform immediate data transfer.